package com.xyh.jvmDemo;

import java.util.concurrent.locks.ReentrantLock;

import static java.lang.Thread.sleep;

/**
 * @version v1.0
 * @类描述：
 * @项目名称：
 * @包名： com.xyh.jvmDemo
 * @类名称：LockDemo
 * @创建人：YIHANG.XU
 * @创建时间：2020/9/2110:01 下午
 * @修改人：YIHANG.XU
 * @修改时间：2020/9/2110:01 下午
 * @修改备注：
 * @Copyright
 */
public class Station extends Thread {
    //设置静态票数
    static int ticket = 100;
    //设置线程锁
    static Object ob = "ThisIsATicket";

    public Station(String name) {
        super(name);
    }


    @Override
    public void run() {
        shll();
    }

    private void shll() {
        {
            while (ticket > 0) {
                synchronized (ob) {
                    //ob相当于一个钥匙
                    /**
                     * 使用同步锁控制票
                     */
                    if (ticket > 0) {
                        //窗口三有二分之一的可能是退票
                        System.out.println(getName() + "卖了第" + ticket + "张票");
                        ticket--;
                    } else {
                        System.out.println("很抱歉，票卖完了");
                    }
                }
                /**
                 * 让线程休眠时间随机
                 */
                try {

                    sleep((long) (1000 * Math.random()));
                } //休息一秒
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }


}
